<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Pedidos extends CI_Controller {
	
	function __construct() {
		parent::__construct();
	
		# Carregando Models
		$this->load->model(
		array(
				'Comanda',
				'Pedido'
			)
		);
	}
	
	/**
	* @name index()
	* @param void
	* @return void
	* @see Pedidos
	* @since 28/05/2013
	* @author Carlos Augusto Dugonski
	*/
	public function index() {
		switch ($this->index->logado()) {
			case 'cozinha':
				$this->index->montarPagina('pedidos_cozinha/pedido_cozinha_view');
				break;
			case 'bar':
				$this->index->montarPagina('pedido_bar/pedido_bar_view');
				break;
			case 'caixa':
				redirect('home');
				break;
			case 'mesa':
				redirect('home');
				break;
		}
		if (!$this->index->logado()) {
			show_error(ERRO_PERMISSAO);
		}
    }

    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function criar() {
    	if ($this->index->logado() == 'administrador' || $this->index->logado() == 'mesa') {
	    	$aComanda = $this->Comanda->lerByLogin($this->session->userdata('login_usuario'));
	    	$aPedido['qtde_pedido'] = $_POST['qtde_produto'];
	    	$aPedido['obs_pedido'] = $_POST['obs_pedido'];
	    	$aPedido['id_produto'] = $_POST['id_produto'];
	    	$aPedido['preco_pedido'] = $_POST['preco_produto'] * $aPedido['qtde_pedido'];
	    	$aPedido['id_categoria'] = $_POST['id_categoria'];
	    	$aPedido['id_comanda'] = $aComanda['id_comanda'];
	    	if ($this->Pedido->criar($aPedido)) {
	    		$aData['pedidos'] = $this->Pedido->lerByLogin($this->session->userdata('login_usuario'));
	    		$this->index->montarPagina('mesa/pedidos_view', $aData);
	    		return true;
	    	} else {
	    		return false;	
	    	}
    	} else {
    		$this->index->montarPagina('mesa/qrmenu_view');
    		return false;
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function criarRapido() {
    	if ($this->index->logado() == 'administrador' || $this->index->logado() == 'mesa') {
	    	$aComanda = $this->Comanda->lerByLogin($this->session->userdata('login_usuario'));
	    	$aPedido['qtde_pedido'] = 1;
	    	$aPedido['obs_pedido'] = '';
	    	$aPedido['id_produto'] = $_GET['id_produto'];
	    	$aPedido['preco_pedido'] = $_GET['preco_produto'];
	    	$aPedido['id_categoria'] = $_GET['id_categoria'];
	    	$aPedido['id_comanda'] = $aComanda['id_comanda'];
	    	if ($this->Pedido->criar($aPedido)) {
	    		return true;
	    	} else {
	    		return false;	
	    	}
    	} else {
    		$this->index->montarPagina('mesa/qrmenu_view');
    		return false;
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerBar() {
    	if ($this->index->logado() == 'administrador' || $this->index->logado() == 'bar') {
    		echo '{ "aaData" : ' . json_encode($this->Pedido->lerBar()) . " } ";
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerQtdeBar() {
    	echo $this->db->query("
			SELECT
				id_pedido
			FROM
				tb_pedido p
			INNER JOIN
				(tb_produto pr, tb_categoria ca)
			ON
				p.tb_produto_id_produto = pr.id_produto AND
				ca.id_categoria = pr.tb_categoria_id_categoria
			WHERE
				responsavel_categoria = 'bar'
			AND time_inicio_pedido >= CURDATE()
			AND time_inicio_pedido < CURDATE() + INTERVAL 1 DAY
    	")->num_rows();
    	echo ',' . $this->db->query("
			SELECT
				id_pedido
			FROM
				tb_pedido p
			INNER JOIN
				(tb_produto pr, tb_categoria ca)
			ON
				p.tb_produto_id_produto = pr.id_produto AND
				ca.id_categoria = pr.tb_categoria_id_categoria
			WHERE
				responsavel_categoria = 'bar'
    		AND
    			status_pedido = 'Cancelado'	
			AND time_inicio_pedido >= CURDATE()
			AND time_inicio_pedido < CURDATE() + INTERVAL 1 DAY
    	")->num_rows();
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerQtdeCozinha() {
    	echo $this->db->query("
			SELECT
				id_pedido
			FROM
				tb_pedido p
			INNER JOIN
				(tb_produto pr, tb_categoria ca)
			ON
				p.tb_produto_id_produto = pr.id_produto AND
				ca.id_categoria = pr.tb_categoria_id_categoria
			WHERE
				responsavel_categoria = 'cozinha'
			AND time_inicio_pedido >= CURDATE()
			AND time_inicio_pedido < CURDATE() + INTERVAL 1 DAY
    	")->num_rows();
    	echo ',' . $this->db->query("
			SELECT
				id_pedido
			FROM
				tb_pedido p
			INNER JOIN
				(tb_produto pr, tb_categoria ca)
			ON
				p.tb_produto_id_produto = pr.id_produto AND
				ca.id_categoria = pr.tb_categoria_id_categoria
			WHERE
				responsavel_categoria = 'cozinha'
    		AND
    			status_pedido = 'Cancelado'	
			AND time_inicio_pedido >= CURDATE()
			AND time_inicio_pedido < CURDATE() + INTERVAL 1 DAY
    	")->num_rows();
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function lerCozinha() {
    	if ($this->index->logado() == 'administrador' || $this->index->logado() == 'cozinha') {
    		echo '{ "aaData" : ' . json_encode($this->Pedido->lerCozinha()) . " } ";
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function visualizar() {
    	if ($this->index->logado() == 'administrador' || $this->index->logado() == 'mesa') {
	    	$aData['pedidos'] = $this->Pedido->lerByLogin($this->session->userdata('login_usuario'));
	    	$this->index->montarPagina('mesa/pedidos_view', $aData);
    	} else {
    		$this->index->montarPagina('mesa/qrmenu_view');
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function cozinha() {
    	if($this->index->logado() == 'administrador' || $this->index->logado() == 'cozinha') {
    		$this->index->montarPagina('pedido_cozinha/pedido_cozinha_view');
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function bar() {
    	if($this->index->logado() == 'administrador' || $this->index->logado() == 'bar') {
    		$this->index->montarPagina('pedido_bar/pedido_bar_view');
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }

    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function atualizaStatusProximo($iIdPedido) {
    	if($this->index->logado() == 'administrador' || $this->index->logado() == 'bar' || $this->index->logado() == 'cozinha') {
    		$aPedido = $this->Pedido->lerById($iIdPedido);
    		var_dump($aPedido);
    		switch ($aPedido['status_pedido']) {
    			case 'Pedido':
    				$sStatus = 'Aceito';
    				break;
    			case 'Aceito':
    				$sStatus = 'Entregue';
    				break;
    			case 'Entregue':
    				$sStatus = 'Cancelado';
    				break;
    			case 'Cancelado' :
    				$sStatus = 'Pedido';
    				break;
    		}
    		if ($this->Pedido->atualizar($sStatus, $iIdPedido)) {
    			return json_encode('Sucesso');
    		} else {
    			return json_encode('Falha');
    		}
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function atualizaStatusAnterior($iIdPedido) {
    	if($this->index->logado() == 'administrador' || $this->index->logado() == 'bar' || $this->index->logado() == 'cozinha') {
    		$aPedido = $this->Pedido->lerById($iIdPedido);
    		switch ($aPedido['status_pedido']) {
    			case 'Pedido' :
    				$sStatus = 'Cancelado';
    				break;
    			case 'Aceito' :
    				$sStatus = 'Pedido';
    				break;
    			case 'Entregue' :
    				$sStatus = 'Aceito';
    				break;
    			case 'Cancelado' :
    				$sStatus = 'Entregue';
    				break;
    		}
    		if ($this->Pedido->atualizar($sStatus, $iIdPedido)) {
    			return json_encode('Sucesso');
    		} else {
    			return json_encode('Falha');
    		}
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
    
    /**
     * @name
     * @param
     * @param
     * @return
     * @see
     * @since
     * @author
     */
    public function atualizaStatusCancelar($iIdPedido) {
    	if($this->index->logado() == 'mesa') {
    		if ($this->Pedido->atualizar('Cancelado', $iIdPedido)) {
    			return json_encode('Cancelado');
    		} else {
    			return json_encode('Falha');
    		}
    	} else {
    		show_error(ERRO_PERMISSAO);
    	}
    }
}

/* End of file Pedidos.php */